home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / networking / osi / quipu / quipu-7.0-bugs.complete < prev    next >
Encoding:
Text File  |  1992-08-05  |  52.0 KB  |  1,975 lines

  1. -------------------- Bug No 1 --------------------------
  2. Return-Path: <c.robbins@xtel.co.uk>
  3. Received: from xtel.co.uk by lancaster.xtel.co.uk with SMTP (PP) 
  4.           id <15303-0@lancaster.xtel.co.uk>; Wed, 24 Jul 1991 08:46:01 +0100
  5. To: quipu-bugs@xtel.co.uk
  6. Subject: dsacontrol
  7. Date: Wed, 24 Jul 91 08:45:59 +0100
  8. From: Colin Robbins <c.robbins@xtel.co.uk>
  9.  
  10. QUIPU VERSION:    7.0
  11.  
  12. ISODE VERSION:    7.0
  13.  
  14. PROGRAM:    Dish
  15.  
  16. SYNOPSIS:    The Dish command 'dsacontrol -refresh' core dump
  17.         if no arguments are given.
  18.  
  19. DESCRIPTION:    It happens to all the other dsacontrol flags as well!
  20.  
  21. SAMPLE FIX:
  22.  
  23. *** quipu/dish/modify.c~    Wed Jul 17 12:49:47 1991
  24. --- quipu/dish/modify.c    Wed Jul 24 08:43:20 1991
  25. ***************
  26. *** 1,14 ****
  27.   /* modify.c - */
  28.   
  29.   #ifndef    lint
  30. ! static char *rcsid = "$Header: /a/vulcan/xtel/isode/isode-master/quipu/dish/RCS/modify.c,v 8.0 91/07/17 12:49:46 isode Rel $";
  31.   #endif
  32.   
  33.   /* 
  34. !  * $Header: /a/vulcan/xtel/isode/isode-master/quipu/dish/RCS/modify.c,v 8.0 91/07/17 12:49:46 isode Rel $
  35.    *
  36.    *
  37.    * $Log:    modify.c,v $
  38.    * Revision 8.0  91/07/17  12:49:46  isode
  39.    * Release 7.0
  40.    * 
  41. --- 1,17 ----
  42.   /* modify.c - */
  43.   
  44.   #ifndef    lint
  45. ! static char *rcsid = "$Header: /a/vulcan/xtel/isode/isode-master/quipu/dish/RCS/modify.c,v 8.1 91/07/24 08:43:04 isode Exp $";
  46.   #endif
  47.   
  48.   /* 
  49. !  * $Header: /a/vulcan/xtel/isode/isode-master/quipu/dish/RCS/modify.c,v 8.1 91/07/24 08:43:04 isode Exp $
  50.    *
  51.    *
  52.    * $Log:    modify.c,v $
  53. +  * Revision 8.1  91/07/24  08:43:04  isode
  54. +  * arg count check
  55. +  * 
  56.    * Revision 8.0  91/07/17  12:49:46  isode
  57.    * Release 7.0
  58.    * 
  59. ***************
  60. *** 529,537 ****
  61.           return;
  62.       }
  63.   
  64. !          if (test_arg (argv[1], "-dump",1))
  65.           (void) sprintf (buffer, "d %s", argv[2]);
  66.       else if (test_arg (argv[1], "-tailor",1))
  67.           (void) sprintf (buffer, "t %s", argv[2]);
  68.       else if (test_arg (argv[1], "-abort",1)) {
  69.           (void) strcpy (buffer,"a");
  70. --- 532,542 ----
  71.           return;
  72.       }
  73.   
  74. !     if (test_arg (argv[1], "-dump",1))
  75. !         if (argc != 3) goto out; else
  76.           (void) sprintf (buffer, "d %s", argv[2]);
  77.       else if (test_arg (argv[1], "-tailor",1))
  78. +         if (argc != 3) goto out; else
  79.           (void) sprintf (buffer, "t %s", argv[2]);
  80.       else if (test_arg (argv[1], "-abort",1)) {
  81.           (void) strcpy (buffer,"a");
  82. ***************
  83. *** 542,553 ****
  84. --- 547,562 ----
  85.           argc++;        /* to get through if (argc != 3) */
  86.       }
  87.       else if (test_arg (argv[1], "-refresh",3))
  88. +         if (argc != 3) goto out; else
  89.           (void) sprintf (buffer, "r %s", foobar (argv[2]));
  90.       else if (test_arg (argv[1], "-resync",2))
  91. +         if (argc != 3) goto out; else
  92.           (void) sprintf (buffer, "f %s", foobar (argv[2]));
  93.       else if (test_arg (argv[1], "-lock",1))
  94. +         if (argc != 3) goto out; else
  95.           (void) sprintf (buffer, "l %s", foobar (argv[2]));
  96.       else if (test_arg (argv[1], "-unlock",1))
  97. +         if (argc != 3) goto out; else
  98.           (void) sprintf (buffer, "u %s", foobar (argv[2]));
  99.       else if (test_arg (argv[1], "-info",1)) {
  100.           dsa_control_info();
  101. ***************
  102. *** 559,564 ****
  103. --- 568,574 ----
  104.               argc++;        /* to get through if (argc != 3) */
  105.           }
  106.           else
  107. +             if (argc != 3) goto out; else
  108.               (void) sprintf (buffer, "s %s", foobar (argv[2]));
  109.       }
  110.       else
  111. ***************
  112. *** 570,575 ****
  113. --- 580,586 ----
  114.       }
  115.   
  116.       if (argc != 3) {
  117. + out:;
  118.           Usage (argv[0]);
  119.           return;
  120.       }
  121.  
  122. ORIGINAL REPORT:
  123.  
  124. ------- Forwarded Message
  125.  
  126. Subject: dsacontrol -refresh core dump
  127. Reported-On: Thu, 18 Jul 91 15:31:55 +0000
  128. Reported-By: Paul Barker <P.Barker@cs.ucl.ac.uk>
  129. Reported-To: c.robbins@xtel.co.uk
  130.  
  131. Regrettably the signal catching rather gets in the way here.  I think the
  132. problem is the null DN.  If I explicitly give a full leaf DN, it says:
  133.  
  134. Dish -> dsacontrol -refresh "@c=GB@o=University College London@ou=Computer
  135. Science@cn=Paul Barker"
  136. *** Service error: Unwilling to perform ***
  137.  
  138.  
  139. bunnahabhain 129> ./xdish -u me -password
  140. Welcome to Dish (DIrectory SHell)
  141. Enter password for "me":
  142. Dish -> squid
  143. Connected to Vicuna at BELLS-TCP=50987
  144. Current position: @c=GB@o=University College London@ou=Computer Science
  145. User name: @c=GB@o=University College London@ou=Computer Science@cn=Incads
  146. Current sequence: default
  147. Dish -> sea sn=barker
  148. 1   cn=Adrian Barker
  149. 2   cn=Paul Barker
  150. Dish -> mov 2
  151. Dish -> dsacontrol -refresh      <-   NULLDN ******
  152. Dish Problem
  153. Abort (core dumped)
  154. bunnahabhain 130> adb xdish
  155. $c
  156.  
  157. core file = core -- program ``xdish''
  158. SIGIOT 6: abort
  159. _kill(?)
  160. __DYNAMIC(0x1c194,0xf779f08c,0x0,0xd8cd3,0x1460d8,0xf779f00c) + 8
  161. _dish_quit(0xb,0x3,0xf7ffe948,0x0,0x1,0xf779c05c) + 1d8
  162. adb
  163.  
  164. ------- End of Forwarded Message
  165.  
  166. -------------------- Bug No 2 --------------------------
  167. Return-Path: <c.robbins@xtel.co.uk>
  168. Received: from xtel.co.uk by lancaster.xtel.co.uk with SMTP (PP) 
  169.           id <01607-0@lancaster.xtel.co.uk>; Wed, 24 Jul 1991 09:42:00 +0100
  170. To: quipu-bugs@xtel.co.uk
  171. Subject: bind option in dish
  172. Date: Wed, 24 Jul 91 09:41:49 +0100
  173. From: Colin Robbins <c.robbins@xtel.co.uk>
  174.  
  175. QUIPU VERSION:    7.0
  176.  
  177. ISODE VERSION:    7.0
  178.  
  179. PROGRAM:    Dish
  180.  
  181. SYNOPSIS:    If you do a 'bind -call x -y', a following bind
  182.         attempt remebers the bad '-y' argument and reuses it!
  183.  
  184. SAMPLE FIX:
  185.  
  186. *** quipu/dish/bind.c~    Wed Jul 17 12:49:38 1991
  187. --- quipu/dish/bind.c    Wed Jul 24 09:37:13 1991
  188. ***************
  189. *** 1,14 ****
  190.   /* bind.c - */
  191.   
  192.   #ifndef    lint
  193. ! static char *rcsid = "$Header: /a/vulcan/xtel/isode/isode-master/quipu/dish/RCS/bind.c,v 8.0 91/07/17 12:49:38 isode Rel $";
  194.   #endif
  195.   
  196.   /* 
  197. !  * $Header: /a/vulcan/xtel/isode/isode-master/quipu/dish/RCS/bind.c,v 8.0 91/07/17 12:49:38 isode Rel $
  198.    *
  199.    *
  200.    * $Log:    bind.c,v $
  201.    * Revision 8.0  91/07/17  12:49:38  isode
  202.    * Release 7.0
  203.    * 
  204. --- 1,17 ----
  205.   /* bind.c - */
  206.   
  207.   #ifndef    lint
  208. ! static char *rcsid = "$Header: /a/vulcan/xtel/isode/isode-master/quipu/dish/RCS/bind.c,v 8.1 91/07/24 09:37:06 isode Exp $";
  209.   #endif
  210.   
  211.   /* 
  212. !  * $Header: /a/vulcan/xtel/isode/isode-master/quipu/dish/RCS/bind.c,v 8.1 91/07/24 09:37:06 isode Exp $
  213.    *
  214.    *
  215.    * $Log:    bind.c,v $
  216. +  * Revision 8.1  91/07/24  09:37:06  isode
  217. +  * bind arg fix
  218. +  * 
  219.    * Revision 8.0  91/07/17  12:49:38  isode
  220.    * Release 7.0
  221.    * 
  222. ***************
  223. *** 247,252 ****
  224. --- 250,256 ----
  225.               (void) strcpy (username,argv[x]);
  226.               if (*username == '-') {
  227.                   ps_printf (OPT,"Unknown option %s\n",username);
  228. +                 username[0] = 0;
  229.                   Usage (argv[0]);
  230.                   return (NOTOK);
  231.               }
  232. ORIGINAL REPORT:
  233.  
  234. ------- Forwarded Message
  235.  
  236. Subject: Isode 6.8 bugs
  237. Reported-On: Sat, 20 Jul 91 07:18:40 +0100
  238. Reported-By: Hallvard B Furuseth <hbf@usit.uio.no>
  239. Reported-To: Quipu-support@cs.ucl.ac.uk
  240.  
  241. I have been sitting on some Isode 6.8 bug reports for some time.
  242. I suppose it's a little late to remember it now, but anyway, here goes:
  243.  
  244. [... deleted as fixed between 6.8 and 7.0 ... ]
  245.  
  246. Dish command-line handling is wrong (with readline):
  247.  
  248. dish
  249. dish -> bind -call xxxx -yyyy
  250.     Unknown option -yyyy
  251.     Usage ...
  252. dish -> bind -call zzzz
  253.     Equals missing in RDN '-yyyy'            << Wrong!
  254.     Invalid DN for username: '-yyyy'
  255.     Usage ...
  256.  
  257.  
  258. [... deleted as fixed between 6.8 and 7.0 ... ]
  259.  
  260. ------- End of Forwarded Message
  261.  
  262. -------------------- Bug No 5 --------------------------
  263. Return-Path: <c.robbins@xtel.co.uk>
  264. Received: from xtel.co.uk by lancaster.xtel.co.uk with SMTP (PP) 
  265.           id <13516-0@lancaster.xtel.co.uk>; Wed, 14 Aug 1991 10:11:46 +0100
  266. To: quipu-bugs@xtel.co.uk
  267. Subject: ACLs in DUAs
  268. Date: Wed, 14 Aug 91 10:11:41 +0100
  269. From: Colin Robbins <c.robbins@xtel.co.uk>
  270.  
  271. QUIPU VERSION:    7.0
  272.  
  273. ISODE VERSION:    7.0
  274.  
  275. PROGRAM:    DUAs using libdsap
  276.  
  277. SYNOPSIS:    If a DUA prints an ACL structure before copying it,
  278.         the result is unpredicatble.  This does not affect DISH.
  279.  
  280. SAMPLE FIX:
  281.  
  282. *** /tmp/RCSAa26667    Wed Aug 14 10:04:47 1991
  283. --- dsap/common/acl.c    Mon Aug 12 15:22:34 1991
  284. ***************
  285. *** 320,325 ****
  286. --- 323,335 ----
  287.       if (decode_Quipu_ACLSyntax(pe,1,NULLIP,NULLVP,&aclptr) == NOTOK) {
  288.           return (struct acl *) NULL;
  289.       }
  290. +     if (! aclptr->ac_child)
  291. +         aclptr->ac_child = defaultacl;
  292. +     if (! aclptr->ac_entry)
  293. +         aclptr->ac_entry = defaultacl;
  294. +     if (! aclptr->ac_default)
  295. +         aclptr->ac_default = defaultacl;
  296.       return (aclptr);
  297.   
  298.   }
  299. -------------------- Bug No 7 --------------------------
  300. Return-Path: <c.robbins@xtel.co.uk>
  301. Received: from xtel.co.uk by lancaster.xtel.co.uk with SMTP (PP) 
  302.           id <24369-0@lancaster.xtel.co.uk>; Wed, 14 Aug 1991 14:53:28 +0100
  303. To: quipu-bugs@xtel.co.uk
  304. Subject: File attributes file name
  305. Date: Wed, 14 Aug 91 14:53:20 +0100
  306. From: Colin Robbins <c.robbins@xtel.co.uk>
  307.  
  308. QUIPU VERSION:    7.0
  309.  
  310. ISODE VERSION:    7.0
  311.  
  312. PROGRAM:    DISH
  313.  
  314. SYNOPSIS:    showentry -edb will only print the file name
  315.         of a file attribute first time around.
  316.  
  317. SAMPLE FIX:
  318.  
  319. *** /tmp/RCSAa29858    Wed Aug 14 14:50:04 1991
  320. --- dsap/common/file_print.c    Wed Aug 14 14:49:16 1991
  321. ***************
  322. *** 168,175 ****
  323.                   return;
  324.               }
  325.               last_at = save_at;
  326. !             if (used_temp)
  327.                   ps_print (ps,fs->fs_name);
  328.           } else if (! (fs->fs_mode & FS_DEFAULT))
  329.               ps_print (ps,fs->fs_name);
  330.   
  331. --- 168,177 ----
  332.                   return;
  333.               }
  334.               last_at = save_at;
  335. !             if (used_temp) {
  336.                   ps_print (ps,fs->fs_name);
  337. +                 fs->fs_mode &= ~FS_DEFAULT;
  338. +             }
  339.           } else if (! (fs->fs_mode & FS_DEFAULT))
  340.               ps_print (ps,fs->fs_name);
  341.   
  342.  
  343. -------------------- Bug No 8 --------------------------
  344. Return-Path: <c.robbins@xtel.co.uk>
  345. Received: from xtel.co.uk by lancaster.xtel.co.uk with SMTP (PP) 
  346.           id <25718-0@lancaster.xtel.co.uk>; Wed, 14 Aug 1991 15:59:52 +0100
  347. To: quipu-bugs@xtel.co.uk
  348. Subject: Photos in POD
  349. Date: Wed, 14 Aug 91 15:59:43 +0100
  350. From: Colin Robbins <c.robbins@xtel.co.uk>
  351.  
  352. QUIPU VERSION:    7.0
  353.  
  354. ISODE VERSION:    7.0
  355.  
  356. PROGRAM:    POD
  357.  
  358. SYNOPSIS:    Photo are not always displayed correctly.
  359.  
  360. SAMPLE FIX:
  361.  
  362. *** others/quipu/uips/pod/read.c~    Wed Jul 17 13:26:27 1991
  363. --- others/quipu/uips/pod/read.c    Wed Jul 24 10:08:52 1991
  364. ***************
  365. *** 288,297 ****
  366.       two_passes = 0;
  367.       
  368.       (void) pe2ps(sps, picture);
  369. !     decode_t4(sps->ps_base, "photo", 0);
  370. !     decode_t4(sps->ps_base, "photo", 0);
  371. !     
  372.       ps_print(ps,"(see below)");
  373.       ps_free(sps);
  374.     }
  375.   }
  376. --- 288,303 ----
  377.       two_passes = 0;
  378.       
  379.       (void) pe2ps(sps, picture);
  380. !     if (decode_t4(sps->ps_base, "photo", sps->ps_ptr - sps->ps_base ) == -1)
  381. !         goto out;
  382. !     if (two_passes && 
  383. !     decode_t4 (sps->ps_base, "photo", sps->ps_ptr - sps->ps_base) == -1 )
  384. !         goto out;
  385.       ps_print(ps,"(see below)");
  386. + out:;
  387.       ps_free(sps);
  388.     }
  389.   }
  390.  
  391.  
  392. -------------------- Bug No 9 --------------------------
  393. Return-Path: <c.robbins@xtel.co.uk>
  394. Received: from xtel.co.uk by lancaster.xtel.co.uk with SMTP (PP) 
  395.           id <03889-0@lancaster.xtel.co.uk>; Wed, 21 Aug 1991 14:17:47 +0100
  396. To: quipu-bugs@xtel.co.uk
  397. Subject: SD filter problem
  398. Date: Wed, 21 Aug 91 14:17:43 +0100
  399. From: Colin Robbins <c.robbins@xtel.co.uk>
  400.  
  401. QUIPU VERSION:    7.0
  402.  
  403. ISODE VERSION:    7.0
  404.  
  405. PROGRAM:    SD
  406.  
  407. SYNOPSIS:    Core dumps on some searches
  408.  
  409. ORIGINAL REPORT:
  410.  
  411. ------- Forwarded Message
  412.  
  413. Subject: SD
  414. Reported-On: Wed, 21 Aug 91 13:03:05 +0100
  415. Reported-By: Oliver Wenzel <Wenzel@fokus.berlin.gmd.dbp.de>
  416. Reported-To: quipu-support <quipu-support@cs.ucl.ac.uk>
  417.  
  418. Hello,
  419.  
  420. I found some bugs in filt.c of SD that caused SD to core-dump.
  421. The problem was that in the case that str2AttrVal failed (e.g.
  422. caused by an invalid syntax for the search value), avs_comp_new()
  423. made trouble (line 423-426 in filt.c).
  424.  
  425. I fixed this bug by checking str2AttrV before calling avs_comp_new().
  426. Futher I noticed a problem when calling filter_free() in the error
  427. handling case. This seems to be caused by a missing initialization
  428. of the filter structure. I added some initialization code.
  429.  
  430.  
  431. This bug seems to be handled in the filt.c of POD.
  432.  
  433.  
  434. *** filt.c.orig    Wed Aug 21 12:27:08 1991
  435. - --- filt.c    Wed Aug 21 12:53:13 1991
  436. ***************
  437. *** 351,356 ****
  438. - --- 351,357 ----
  439.   {
  440.     int type;
  441.     char svalue[1024];
  442. +   AttributeValue av;
  443.     Filter rfilt, sfilt = filter_alloc();
  444.     
  445.     if (!filt) return NULLFILTER;
  446. ***************
  447. *** 405,410 ****
  448. - --- 406,415 ----
  449.         sfilt->flt_un.flt_un_item.fi_type = FILTERITEM_SUBSTRINGS;
  450.         sfilt->flt_un.flt_un_item.fi_un.fi_un_substrings.fi_sub_type =
  451.           AttrT_new(filt->fu_cont.item.stroid);
  452. +       sfilt->flt_un.flt_un_item.fi_un.fi_un_substrings.fi_sub_initial = NULLA
  453. V;
  454. +       sfilt->flt_un.flt_un_item.fi_un.fi_un_substrings.fi_sub_any = NULLAV;
  455. +       sfilt->flt_un.flt_un_item.fi_un.fi_un_substrings.fi_sub_final = NULLAV;
  456. +       sfilt->flt_un.flt_un_item.fi_un.fi_un_substrings.fi_sub_match = NULL;
  457.   
  458.         if (!sfilt->flt_un.flt_un_item.fi_un.fi_un_ava.ava_type ||
  459.             sfilt->flt_un.flt_un_item.fi_un.fi_un_ava.ava_type->
  460. ***************
  461. *** 414,419 ****
  462. - --- 419,432 ----
  463.           filter_free(sfilt);
  464.           return rfilt;
  465.         }
  466. +       if ((av = str2AttrV(svalue, sfilt->flt_un.flt_un_item.fi_un.
  467. +             fi_un_substrings.fi_sub_type->oa_syntax)) == NULLAttrV)
  468. +       {
  469. +          rfilt = sfilt->flt_next;
  470. +          sfilt->flt_next = NULLFILTER;
  471. +          filter_free(sfilt);
  472. +          return rfilt;
  473. +       }
  474.   
  475.         sfilt->flt_un.flt_un_item.fi_un.fi_un_substrings.fi_sub_initial =
  476.           NULLAV;
  477. ***************
  478. *** 420,429 ****
  479.         sfilt->flt_un.flt_un_item.fi_un.fi_un_substrings.fi_sub_final =
  480.           NULLAV;
  481.         sfilt->flt_un.flt_un_item.fi_un.fi_un_substrings.fi_sub_any =
  482. !         avs_comp_new(str2AttrV(svalue,
  483. !                                sfilt->flt_un.flt_un_item.fi_un.
  484. !                                fi_un_substrings.fi_sub_type->
  485. !                                oa_syntax));
  486.   
  487.         if (sfilt->flt_un.flt_un_item.fi_un.fi_un_substrings.fi_sub_any ==
  488.             NULL) {
  489. - --- 433,439 ----
  490.         sfilt->flt_un.flt_un_item.fi_un.fi_un_substrings.fi_sub_final =
  491.           NULLAV;
  492.         sfilt->flt_un.flt_un_item.fi_un.fi_un_substrings.fi_sub_any =
  493. !         avs_comp_new(av);
  494.   
  495.         if (sfilt->flt_un.flt_un_item.fi_un.fi_un_substrings.fi_sub_any ==
  496.             NULL) {
  497.  
  498.  
  499. ------- End of Forwarded Message
  500.  
  501. -------------------- Bug No 13 --------------------------
  502. Return-Path: <c.robbins@xtel.co.uk>
  503. Received: from xtel.co.uk by lancaster.xtel.co.uk with SMTP (PP) 
  504.           id <01162-0@lancaster.xtel.co.uk>; Wed, 25 Sep 1991 09:22:00 +0100
  505. To: quipu-bugs@xtel.co.uk
  506. Subject: unexpected results with dish: bind -c
  507. Date: Wed, 25 Sep 91 09:21:57 +0100
  508. From: Colin Robbins <c.robbins@xtel.co.uk>
  509.  
  510. QUIPU VERSION:    7.0
  511.  
  512. ISODE VERSION:    7.0
  513.  
  514. PROGRAM:    dish
  515.  
  516. SYNOPSIS:    If there argument to "bind -c" is incorrect the error
  517.         handling is not as good as it could be, and future
  518.         "bind -c" operations produce unexpected results.
  519.  
  520. SAMPLE FIX:
  521.  
  522. *** /tmp/RCSAa17905    Wed Sep 25 09:17:26 1991
  523. --- quipu/dish/bind.c    Wed Sep 25 09:15:29 1991
  524. ***************
  525. *** 155,160 ****
  526. --- 155,170 ----
  527.       (void) alarm (connect_time);
  528.   }
  529.   
  530. + isnumeric (ptr)
  531. + char * ptr;
  532. + {
  533. +     while (*ptr)
  534. +         if (! isdigit (*ptr++) )
  535. +             return FALSE;
  536. +     return TRUE;
  537. + }
  538.   call_bind (argc,argv)
  539.   int argc;
  540.   char ** argv;
  541. ***************
  542. *** 163,168 ****
  543. --- 173,179 ----
  544.   char    noconnect = FALSE;
  545.   static  char    bdsa  [LINESIZE], save_bdsa[LINESIZE];
  546.   char   *save_address;
  547. + char   *save_name;
  548.   extern  char * dsa_address,
  549.            * myname;
  550.   FILE    *fp;
  551. ***************
  552. *** 175,180 ****
  553. --- 186,192 ----
  554.   
  555.       bdsa[0] = 0;
  556.       save_address = dsa_address;
  557. +     save_name = myname;
  558.   
  559.       for (x=1; x<argc; x++) {
  560.           if (test_arg (argv[x], "-noconnect",3))
  561. ***************
  562. *** 261,267 ****
  563.       if (noconnect)
  564.           return (OK);
  565.   
  566. !     if (isdigit (*username)) {
  567.           PS        ps;
  568.   
  569.           if ((newdn = sequence_dn (atoi (username))) == NULLDN) {
  570. --- 273,279 ----
  571.       if (noconnect)
  572.           return (OK);
  573.   
  574. !     if (isnumeric (username)) {
  575.           PS        ps;
  576.   
  577.           if ((newdn = sequence_dn (atoi (username))) == NULLDN) {
  578. ***************
  579. *** 336,342 ****
  580.           break;
  581.       }
  582.   
  583. !     if (isdigit (*bdsa) && (dsadn = sequence_dn (atoi (bdsa)))) {
  584.           PS    ps;
  585.   
  586.           dsadn = dn_cpy (dsadn);
  587. --- 348,354 ----
  588.           break;
  589.       }
  590.   
  591. !     if (isnumeric (bdsa) && (dsadn = sequence_dn (atoi (bdsa)))) {
  592.           PS    ps;
  593.   
  594.           dsadn = dn_cpy (dsadn);
  595. ***************
  596. *** 470,475 ****
  597. --- 482,488 ----
  598.           else
  599.               ds_bind_error(OPT, &binderr);
  600.           dsa_address = save_address;
  601. +         myname = save_name;
  602.           return (NOTOK);
  603.       } 
  604.       (void) signal (SIGALRM, SIG_IGN);
  605.  
  606. ORIGINAL REPORT:
  607.  
  608. ------- Forwarded Message
  609.  
  610. Subject: Re: Minor dish bug and suggestions
  611. Reported-On: Tue, 24 Sep 91 10:58:20 +0100
  612. Reported-By: hbf@usit.uio.no (Hallvard B Furuseth)
  613. Reported-To: quipu-support@cs.ucl.ac.uk
  614.  
  615. >    >Last bind below should fail.
  616. > Why?
  617.  
  618. Well, I bound to a nonexistent address, '0101'H/Internet=1.2.3.4+5,
  619. which failed as it should.  (Or maybe it does exist?  Anyway, I got
  620. the same result when I tried '0101'H/129.241.1.99+2007 which does not.)
  621. Then I said 'bind' with no args.  Then it should try to bind to the
  622. same address again, right?  So it should fail again.  Or maybe it
  623. should connect to the last DSA it did connect to, ie Electric Eel.
  624. Then squid should say
  625.  
  626.    Connected to Electric Eel at '0101'H/Internet=129.241.1.99+2005
  627.  
  628. or just
  629.  
  630.    Connected to '0101'H/Internet=129.241.1.99+2005
  631.  
  632. It should at least not claim to be connected to the address which it
  633. just failed to connect to:
  634.  
  635.    Connected to '0101'H/Internet=1.2.3.4+5 ...
  636.  
  637.  
  638. > This generally means you are connected to the DSA through a TS Bridge.
  639. > Are you using a TS Bridge.
  640. > If not, what TSEL are you using for the DSA address (if any).
  641.  
  642. No, we have no TS Bridge.  What's a TSEL - is that the '0101'H/?
  643. We use '0101'H/ in front of every DSA address.
  644.  
  645.  
  646. BTW, just now I happened to come across something other strange:
  647. I'm bound to Electric Eel as @c=NO@o=UNINETT@cn=EAN Directory Manager,
  648. in the middle of a session mostly with fred -dm2dn, modify and search.
  649. I just tried
  650.     bind -call 1.2.23.4+5
  651. I intended another nonexistent addr, forgot the '0101'H/, and dish said
  652.  
  653. Unable to determine presentation address for @c=NO@o=Universitetet i Oslo@ou=In
  654. stitutt for informatikk@cn=Jan Erik Ressem
  655.  
  656. That's the object I get with 'showname 1'.
  657.  
  658.  
  659.             Hallvard
  660.  
  661. ------- End of Forwarded Message
  662.  
  663. -------------------- Bug No 14 --------------------------
  664. Return-Path: <c.robbins@xtel.co.uk>
  665. Received: from xtel.co.uk by lancaster.xtel.co.uk with SMTP (PP) 
  666.           id <16881-0@lancaster.xtel.co.uk>; Fri, 4 Oct 1991 11:49:48 +0100
  667. To: quipu-bugs@xtel.co.uk
  668. Subject: faxtopbm
  669. Date: Fri, 04 Oct 91 11:49:44 +0100
  670. From: Colin Robbins <c.robbins@xtel.co.uk>
  671.  
  672. QUIPU VERSION:    7.0
  673.  
  674. ISODE VERSION:    7.0
  675.  
  676. PROGRAM:    faxtopbm
  677.  
  678. SYNOPSIS:    faxtopbm is broken!
  679.  
  680. ORIGINAL REPORT:
  681.  
  682. ------- Forwarded Message
  683.  
  684. Subject: Hey! Who broke faxtopbm?
  685. Reported-On: Sat, 28 Sep 91 09:36:38 -0800
  686. Reported-By: Marshall Rose <mrose@dbc.mtview.ca.us>
  687. Reported-To: Bug-ISODE@xtel.co.uk
  688.  
  689. It's gotta make two passes, not one!!!
  690.  
  691. /mtr
  692.  
  693. *** others/quipu/photo/:faxtopbm.c    Wed Jul 17 05:16:04 1991
  694. - --- others/quipu/photo/faxtopbm.c    Sat Sep 28 09:35:52 1991
  695. ***************
  696. *** 39,46 ****
  697.   
  698.   #define ALLOCATION_SIZE 16384L
  699.   
  700. - - static    int    passno;
  701. - - 
  702.   static    bit    black, white;
  703.   
  704.   /*     MAIN */
  705. - --- 39,44 ----
  706. ***************
  707. *** 140,146 ****
  708.       exit (1);
  709.       }
  710.   
  711. !     if (decode_t4 (data, file, (int)size) == -1) {
  712.       (void) fprintf (stderr,"\n");
  713.       exit (-1);
  714.       }
  715. - --- 138,145 ----
  716.       exit (1);
  717.       }
  718.   
  719. !     if (decode_t4 (data, file, (int)size) == -1
  720. !         || decode_t4 (data, file, (int)size) == -1) {
  721.       (void) fprintf (stderr,"\n");
  722.       exit (-1);
  723.       }
  724. ***************
  725. *** 171,176 ****
  726. - --- 170,176 ----
  727.   
  728.   /*     PHOTO */
  729.   
  730. + static    int    passno = 1;
  731.   static    int    x, y, maxx;
  732.   
  733.   static    bit    *bitrow, *bP;
  734. ***************
  735. *** 197,202 ****
  736. - --- 197,203 ----
  737.       if (passno == 1) {
  738.       register int    i;
  739.   
  740. +     passno = 2;
  741.       x = maxx, y--;
  742.   
  743.   #ifdef PBM4PARMS
  744.  
  745. ------- End of Forwarded Message
  746.  
  747. -------------------- Bug No 17 --------------------------
  748. Return-Path: <c.robbins@xtel.co.uk>
  749. Received: from xtel.co.uk by lancaster.xtel.co.uk with SMTP (PP) 
  750.           id <11485-0@lancaster.xtel.co.uk>; Mon, 28 Oct 1991 14:42:23 +0000
  751. To: quipu-bugs@xtel.co.uk
  752. Subject: Freeing in dsap pepsy files
  753. Date: Mon, 28 Oct 91 14:42:14 +0000
  754. From: Colin Robbins <c.robbins@xtel.co.uk>
  755.  
  756. QUIPU VERSION:    7.0
  757.  
  758. ISODE VERSION:    7.0
  759.  
  760. PROGRAM:    DSAP library
  761.  
  762. SYNOPSIS:    Some PEPSY structures are not free correctly
  763.  
  764. *** /tmp/RCSAa01064    Mon Oct 28 14:33:01 1991
  765. --- dsap/x500as/asn_ext.c    Mon Oct 28 14:03:21 1991
  766. ***************
  767. *** 636,642 ****
  768. --- 639,653 ----
  769.       return OK;
  770.   }
  771.   
  772. + substring_free (parm)
  773. + struct filter_item *parm;
  774. + {
  775. +     avs_free (parm->UNSUB.fi_sub_initial);
  776. +     avs_free (parm->UNSUB.fi_sub_any);
  777. +     avs_free (parm->UNSUB.fi_sub_final);
  778.   
  779. +     return OK;
  780. + }
  781.   
  782.   
  783.   
  784. ***************
  785. *** 1260,1263 ****
  786. --- 1271,1281 ----
  787.       (*pparm)->gr_encoded = TRUE;
  788.   
  789.       return OK;
  790. + }
  791. + EDB_free (parm)
  792. + struct getedb_result *parm;
  793. + {
  794. +     /* All done for us at some other time (hopefully) */
  795. +     return OK;
  796.   }
  797. *** /tmp/RCSAa01064    Mon Oct 28 14:33:02 1991
  798. --- dsap/x500as/das.py    Mon Oct 28 14:03:08 1991
  799. ***************
  800. *** 452,460 ****
  801.       equality
  802.           [0] AttributeValueAssertion [[p &parm->fi_un.fi_un_ava]],
  803.       substrings 
  804. !         [1] ANY [[a &parm->fi_un.fi_un_substrings]] -- never free this
  805. !             [[D substring_decode ]] [[E substring_encode]],
  806. !             
  807.   
  808.   -- A bit too complex for Pepsy just yet.
  809.   --        [1] SEQUENCE 
  810. --- 455,463 ----
  811.       equality
  812.           [0] AttributeValueAssertion [[p &parm->fi_un.fi_un_ava]],
  813.       substrings 
  814. !         [1] ANY [[a &parm->fi_un.fi_un_substrings]] 
  815. !             [[D substring_decode ]] [[E substring_encode]] 
  816. !             [[F substring_free ]],
  817.   
  818.   -- A bit too complex for Pepsy just yet.
  819.   --        [1] SEQUENCE 
  820. *** /tmp/RCSAa01064    Mon Oct 28 14:33:03 1991
  821. --- dsap/x500as/do.py    Mon Oct 28 14:03:09 1991
  822. ***************
  823. *** 664,670 ****
  824.           {
  825.                   [0] Name [[p ap_name]],
  826.                   [1] ISODEPresentationAddress [[p ap_address ]]
  827. !                 [[E enc_ipa ]][[D dec_ipa ]]
  828.                   
  829.           }
  830.   
  831. --- 667,673 ----
  832.           {
  833.                   [0] Name [[p ap_name]],
  834.                   [1] ISODEPresentationAddress [[p ap_address ]]
  835. !                 [[E enc_ipa ]][[D dec_ipa ]] [[F fr_ipa]]
  836.                   
  837.           }
  838.   
  839. ***************
  840. *** 676,682 ****
  841.           {
  842.                   [0] Name [[p ap_name]],
  843.                   [1] ISODEPresentationAddress [[p ap_address ]]
  844. !                 [[E enc_ipa ]][[D dec_ipa]]
  845.               OPTIONAL <E<parm->ap_address != NULLPA>><D<0>>
  846.           }
  847.   
  848. --- 679,685 ----
  849.           {
  850.                   [0] Name [[p ap_name]],
  851.                   [1] ISODEPresentationAddress [[p ap_address ]]
  852. !                 [[E enc_ipa ]][[D dec_ipa]] [[F fr_ipa]]
  853.               OPTIONAL <E<parm->ap_address != NULLPA>><D<0>>
  854.           }
  855.   
  856. ***************
  857. *** 714,718 ****
  858. --- 717,734 ----
  859.       (*parm)->ap_address = psap;
  860.       return res;
  861.   }
  862. + fr_ipa (parm)
  863. + struct access_point *parm;
  864. + {
  865. +     if (parm && parm->ap_address) {
  866. +         free (parm->ap_address);
  867. +         parm->ap_address = NULLPA;
  868. +     }
  869. +     return OK;
  870. +     
  871. + }
  872.   
  873.   %}
  874. *** /tmp/RCSAa01064    Mon Oct 28 14:33:03 1991
  875. --- dsap/x500as/if.py    Mon Oct 28 14:03:14 1991
  876. ***************
  877. *** 49,66 ****
  878.   
  879.   
  880.   AttributeType [[P oid_table_attr *]] ::=
  881. !     OBJECT IDENTIFIER [[ O oa_ot.ot_oid ]] [[ D dec_at ]]
  882.                       
  883.   
  884.   AttributeValue [[P attrVal *]]
  885.           ::= %D{ 
  886.           *parm = AttrV_alloc();
  887. !     %} ANY [[a av_struct ]] [[ E grab_pe1 ]]
  888.   
  889.   AttributeValueAssertion [[P AVA *]]
  890.           ::= SEQUENCE {
  891.                   AttributeType [[p parm->ava_type]],
  892. !                 AttributeValue [[p parm->ava_value]] [[ D dec_av1 ]]
  893.           }
  894.   
  895.   Attribute [[P attrcomp *]] ::=
  896. --- 52,69 ----
  897.   
  898.   
  899.   AttributeType [[P oid_table_attr *]] ::=
  900. !     OBJECT IDENTIFIER [[ O oa_ot.ot_oid ]] [[ D dec_at ]] [[ F free_at_dummy ]]
  901.                       
  902.   
  903.   AttributeValue [[P attrVal *]]
  904.           ::= %D{ 
  905.           *parm = AttrV_alloc();
  906. !     %} ANY [[a av_struct ]] [[ E grab_pe1 ]] [[ F AttrV_free ]]
  907.   
  908.   AttributeValueAssertion [[P AVA *]]
  909.           ::= SEQUENCE {
  910.                   AttributeType [[p parm->ava_type]],
  911. !                 AttributeValue [[p parm->ava_value]] [[ D dec_av1 ]] 
  912.           }
  913.   
  914.   Attribute [[P attrcomp *]] ::=
  915. ***************
  916. *** 210,216 ****
  917.   
  918.           return res;
  919.   }
  920. !     
  921.   dec_at (parm,pe)
  922.   oid_table_attr ** parm;
  923.   PE pe;
  924. --- 213,219 ----
  925.   
  926.           return res;
  927.   }
  928.   dec_at (parm,pe)
  929.   oid_table_attr ** parm;
  930.   PE pe;
  931. ***************
  932. *** 223,228 ****
  933. --- 226,237 ----
  934.          *parm = AttrT_decode_aux (oid);
  935.          oid_free (oid);
  936.       }
  937. + }
  938. + free_at_dummy (parm)    /* Make sure nothing happens */
  939. + oid_table_attr * parm;
  940. + {
  941. +     return OK;
  942.   }
  943.   
  944.   
  945. *** /tmp/RCSAa01064    Mon Oct 28 14:33:06 1991
  946. --- dsap/x500as/qu.py    Mon Oct 28 14:03:17 1991
  947. ***************
  948. *** 208,214 ****
  949.   --        [3] SET OF SET OF AttributeType
  950.   --    }
  951.       ANY
  952. !     [[E treestruct_encode]] [[D treestruct_decode]]
  953.   
  954.   EntryDataBlock [[P struct getedb_type *]]
  955.           ::= ANY
  956. --- 211,217 ----
  957.   --        [3] SET OF SET OF AttributeType
  958.   --    }
  959.       ANY
  960. !     [[E treestruct_encode]] [[D treestruct_decode]] [[F tree_struct_free]]
  961.   
  962.   EntryDataBlock [[P struct getedb_type *]]
  963.           ::= ANY
  964. ***************
  965. *** 245,251 ****
  966.       versionHeld
  967.           [0] EDBVersion [[s gr_version]] ,
  968.           [1] EntryDataBlock [[p gr_type]]
  969. !             [[E EDB_encode]] [[D EDB_decode]]
  970.               OPTIONAL <E<parm->gr_edb != 0>><D<0>>,
  971.           nextEntryPostion INTEGER [[i gr_nextEntryPos]] OPTIONAL
  972.                   <E<parm->gr_nextEntryPos !=0>><D<0>>
  973. --- 248,254 ----
  974.       versionHeld
  975.           [0] EDBVersion [[s gr_version]] ,
  976.           [1] EntryDataBlock [[p gr_type]]
  977. !             [[E EDB_encode]] [[D EDB_decode]] [[F EDB_free]]
  978.               OPTIONAL <E<parm->gr_edb != 0>><D<0>>,
  979.           nextEntryPostion INTEGER [[i gr_nextEntryPos]] OPTIONAL
  980.                   <E<parm->gr_nextEntryPos !=0>><D<0>>
  981. *** /tmp/RCSAa01124    Mon Oct 28 14:37:25 1991
  982. --- dsap/common/tree_struct.c    Mon Oct 28 14:37:07 1991
  983. ***************
  984. *** 35,41 ****
  985.   extern int oidformat;
  986.   
  987.   /* ARGSUSED */
  988. ! static tree_struct_free (ptr)
  989.   struct tree_struct * ptr;
  990.   {
  991.       /* don't free objectclass - in static table */
  992. --- 38,44 ----
  993.   extern int oidformat;
  994.   
  995.   /* ARGSUSED */
  996. ! tree_struct_free (ptr)
  997.   struct tree_struct * ptr;
  998.   {
  999.       /* don't free objectclass - in static table */
  1000. -------------------- Bug No 19 --------------------------
  1001. Return-Path: <c.robbins@xtel.co.uk>
  1002. Received: from xtel.co.uk by lancaster.xtel.co.uk with SMTP (PP) 
  1003.           id <18366-0@lancaster.xtel.co.uk>; Tue, 5 Nov 1991 16:02:27 +0000
  1004. To: quipu-bugs@xtel.co.uk
  1005. Subject: pod bind problem
  1006. Date: Tue, 05 Nov 91 16:02:18 +0000
  1007. From: Colin Robbins <c.robbins@xtel.co.uk>
  1008.  
  1009. QUIPU VERSION:    7.0
  1010.  
  1011. ISODE VERSION:    7.0
  1012.  
  1013. PROGRAM:    pod
  1014.  
  1015. SYNOPSIS:    Always asked for a password, even if there is one in .quipurc
  1016.  
  1017. SAMPLE FIX:
  1018.  
  1019. *** /tmp/RCSAa11833    Tue Nov  5 15:59:05 1991
  1020. --- others/quipu/uips/pod/calls.c    Mon Sep 23 09:36:22 1991
  1021. ***************
  1022. *** 555,561 ****
  1023.     extern char *dsa_address,
  1024.                 *myname;
  1025.   
  1026. !   if (passwd[0] == '\0') {
  1027.       kill_message();
  1028.       message((Widget) NULL,
  1029.           "Enter password at command line!");
  1030. --- 555,561 ----
  1031.     extern char *dsa_address,
  1032.                 *myname;
  1033.   
  1034. !   if (namestr[0] != '\0' && passwd[0] == '\0') {
  1035.       kill_message();
  1036.       message((Widget) NULL,
  1037.           "Enter password at command line!");
  1038. -------------------- Bug No 22 --------------------------
  1039. Return-Path: <c.robbins@xtel.co.uk>
  1040. Received: from xtel.co.uk by lancaster.xtel.co.uk with SMTP (PP) 
  1041.           id <13627-0@lancaster.xtel.co.uk>; Fri, 22 Nov 1991 10:35:30 +0000
  1042. To: quipu-bugs@xtel.co.uk
  1043. Subject: Official patch #1
  1044. Date: Fri, 22 Nov 91 10:35:27 +0000
  1045. From: Colin Robbins <c.robbins@xtel.co.uk>
  1046.  
  1047. QUIPU VERSION:    7.0
  1048.  
  1049. ISODE VERSION:    7.0
  1050.  
  1051. SYNOPSIS:    First official patch to QUIPU-7.0
  1052.         Replaces the following bug-reports, which have been
  1053.         removed from the database...
  1054.         3, 4, 6, 10, 11, 12, 15, 16, 18, 20 and 21
  1055.         
  1056. ORIGINAL REPORT:
  1057.  
  1058.  
  1059. Dear Camayocs,
  1060.  
  1061. Included below is Patch #1 for QUIPU-7.0.  
  1062.  
  1063. The major aim of the patch is to fix DSA reliability problems. 
  1064. The fixes include:
  1065.     
  1066.     Fixes to prevent replicated EDB filling the Disk with garbage.    
  1067.     Protocol alignment for an obsure read operation.
  1068.     Test for hypothetcial deadlock case.
  1069.     Fix to correctly load 'NULL' EDB files.
  1070.     Fix to 'alias' indexing problem.
  1071.     A fix to the X.25 handler to allow for 'quick' connections!
  1072.     Fix to close the quipu.log file periodically.
  1073.     Fixes to the scheduling code to increase DSA reliability.
  1074.  
  1075. For DUAs we have included a fix to the Quality of Service and
  1076. T.61 string syntax handlers. 
  1077.  
  1078. The patch should be applied to the ISODE-7.0 source tree.  
  1079. You will then need to re-compile ISODE and QUIPU.  To do this you
  1080. should use 
  1081.  
  1082.     cd isode-7.0
  1083.        ./make all all-quipu
  1084.     su
  1085.     ./make inst-all inst-quipu
  1086.  
  1087. And if you installed the "little" dish binaries you should do
  1088.  
  1089.     cd others/quipu/uips/dish
  1090.     ./make all 
  1091.     su
  1092.     ./make inst-all
  1093.  
  1094.  
  1095. Thanks to Paul Barker, Tim Howes, Mark Prior, Mike Roe, Thomas Lenggenhager, 
  1096. George Michaelson, Oliver Wenzel, and the Giant Tortoise DSA for 
  1097. helping detect and fix these bugs.
  1098.  
  1099. Colin
  1100.  
  1101.  
  1102. *** /tmp/RCSAa10173    Wed Oct 23 11:39:17 1991
  1103. --- tsap/tp0ts.c    Wed Oct 23 10:59:06 1991
  1104. ***************
  1105. *** 121,127 ****
  1106.       if (t = tb -> tb_retry) {
  1107.       tb -> tb_retry = NULL;
  1108.   
  1109. !     if (async)
  1110.           switch ((*tb -> tb_retryfnx) (tb, td)) {
  1111.           case NOTOK:
  1112.                   goto out;
  1113. --- 121,127 ----
  1114.       if (t = tb -> tb_retry) {
  1115.       tb -> tb_retry = NULL;
  1116.   
  1117. !     if (async && tb -> tb_retryfnx)
  1118.           switch ((*tb -> tb_retryfnx) (tb, td)) {
  1119.           case NOTOK:
  1120.                   goto out;
  1121. *** /tmp/RCSAa10173    Wed Oct 23 11:39:18 1991
  1122. --- tsap/ts2sunlink.c    Wed Oct 23 10:58:40 1991
  1123. ***************
  1124. *** 175,181 ****
  1125.       register struct tp4pkt *t;
  1126.   
  1127.       t = NULL;
  1128. !     if (async)
  1129.       switch ((*tb -> tb_retryfnx) (tb, td)) {
  1130.           case NOTOK:
  1131.               goto out;
  1132. --- 175,181 ----
  1133.       register struct tp4pkt *t;
  1134.   
  1135.       t = NULL;
  1136. !     if (async && tb -> tb_retryfnx)
  1137.       switch ((*tb -> tb_retryfnx) (tb, td)) {
  1138.           case NOTOK:
  1139.               goto out;
  1140. *** /tmp/RCSAa10173    Wed Oct 23 11:39:19 1991
  1141. --- tsap/ts2tcp.c    Wed Oct 23 10:57:33 1991
  1142. ***************
  1143. *** 189,194 ****
  1144. --- 189,196 ----
  1145.   #endif
  1146.   #endif
  1147.   
  1148. +     tb -> tb_retryfnx = NULLIFP;    /* No need... */
  1149.       return DONE;
  1150.   }
  1151.   
  1152. *** /tmp/RCSAa10173    Wed Oct 23 11:39:19 1991
  1153. --- tsap/ts2tli.c    Wed Oct 23 10:58:54 1991
  1154. ***************
  1155. *** 459,465 ****
  1156.       if (tb->tb_cc == -1) { /* call not yet connected */
  1157.       struct TSAPaddr ta;
  1158.   
  1159. !     if (async) {
  1160.           switch ((*tb -> tb_retryfnx) (tb, td)) {
  1161.           case NOTOK:
  1162.           goto out;
  1163. --- 459,465 ----
  1164.       if (tb->tb_cc == -1) { /* call not yet connected */
  1165.       struct TSAPaddr ta;
  1166.   
  1167. !     if (async && tb -> tb_retryfnx) {
  1168.           switch ((*tb -> tb_retryfnx) (tb, td)) {
  1169.           case NOTOK:
  1170.           goto out;
  1171. *** /tmp/RCSAa10173    Wed Oct 23 11:39:20 1991
  1172. --- tsap/ts2x25.c    Wed Oct 23 10:57:34 1991
  1173. ***************
  1174. *** 146,151 ****
  1175. --- 146,153 ----
  1176.       (void) XTService (tb);      /* in case pktsize changed... */
  1177.       LLOG (x25_log, LLOG_NOTICE,
  1178.         ("connection %d to %s", fd, na2str (remote)));
  1179. +     tb -> tb_retryfnx = NULLIFP;    /* No need... */
  1180.   
  1181.       return DONE;
  1182.   }
  1183.  
  1184.  
  1185. *** /tmp/RCSAa07079    Tue Nov 19 13:13:36 1991
  1186. --- quipu/get_dsa_info.c    Tue Nov 19 13:10:00 1991
  1187. ***************
  1188. *** 306,313 ****
  1189.           break;
  1190.   
  1191.       case DI_TASK:
  1192. !         task_dsa_info_wakeup(di);
  1193. !         di_free(di);
  1194.           break;
  1195.   
  1196.       default:
  1197. --- 306,313 ----
  1198.           break;
  1199.   
  1200.       case DI_TASK:
  1201. !         if ( task_dsa_info_wakeup(di) )
  1202. !         di_free(di);
  1203.           break;
  1204.   
  1205.       default:
  1206. *** /tmp/RCSAa23005    Thu Nov 14 16:22:36 1991
  1207. --- quipu/ds_read.c    Thu Nov 14 16:16:25 1991
  1208. ***************
  1209. *** 160,172 ****
  1210.                   quipu_ctx, realtarget)) != NULLATTR)
  1211.                   goto out;
  1212.   
  1213.               error->dse_type = DSE_ATTRIBUTEERROR;
  1214.               error->ERR_ATTRIBUTE.DSE_at_name = get_copy_dn (entryptr);
  1215.               error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_what =DSE_AT_NOSUCHATTRIBUTE;
  1216. !             if (arg->rda_eis.eis_select != NULLATTR)
  1217. !                 error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_type = AttrT_cpy(arg->rda_eis.eis_select->attr_type);
  1218. !             else
  1219. !                 error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_type = NULLAttrT;
  1220.               error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_value = NULLAttrV;
  1221.               error->ERR_ATTRIBUTE.DSE_at_plist.dse_at_next = DSE_AT_NOPROBLEM;
  1222.               dn_free (realtarget);
  1223. --- 160,174 ----
  1224.                   quipu_ctx, realtarget)) != NULLATTR)
  1225.                   goto out;
  1226.   
  1227. +             if (arg->rda_eis.eis_select == NULLATTR)
  1228. +                 goto out;
  1229.               error->dse_type = DSE_ATTRIBUTEERROR;
  1230.               error->ERR_ATTRIBUTE.DSE_at_name = get_copy_dn (entryptr);
  1231.               error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_what =DSE_AT_NOSUCHATTRIBUTE;
  1232. !             error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_type = 
  1233. !                     AttrT_cpy(arg->rda_eis.eis_select->attr_type);
  1234.               error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_value = NULLAttrV;
  1235.               error->ERR_ATTRIBUTE.DSE_at_plist.dse_at_next = DSE_AT_NOPROBLEM;
  1236.               dn_free (realtarget);
  1237. ***************
  1238. *** 206,219 ****
  1239.       }
  1240.   
  1241.       if ((result->rdr_entry.ent_attr = eis_select (arg->rda_eis,entryptr, dsp ? NULLDN : binddn, quipu_ctx, realtarget)) == NULLATTR)
  1242. !         if (! arg->rda_eis.eis_allattributes) {
  1243.               error->dse_type = DSE_ATTRIBUTEERROR;
  1244.                           error->ERR_ATTRIBUTE.DSE_at_name = get_copy_dn (entryptr);
  1245.                           error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_what =DSE_AT_NOSUCHATTRIBUTE;
  1246. !             if (arg->rda_eis.eis_select != NULLATTR)
  1247. !                             error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_type = AttrT_cpy(arg->rda_eis.eis_select->attr_type);
  1248. !             else
  1249. !                             error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_type = NULLAttrT;
  1250.                           error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_value = NULLAttrV;
  1251.                           error->ERR_ATTRIBUTE.DSE_at_plist.dse_at_next = DSE_AT_NOPROBLEM;
  1252.               dn_free (realtarget);
  1253. --- 208,220 ----
  1254.       }
  1255.   
  1256.       if ((result->rdr_entry.ent_attr = eis_select (arg->rda_eis,entryptr, dsp ? NULLDN : binddn, quipu_ctx, realtarget)) == NULLATTR)
  1257. !         if ((! arg->rda_eis.eis_allattributes) && arg->rda_eis.eis_select) {
  1258.               error->dse_type = DSE_ATTRIBUTEERROR;
  1259.                           error->ERR_ATTRIBUTE.DSE_at_name = get_copy_dn (entryptr);
  1260.                           error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_what =DSE_AT_NOSUCHATTRIBUTE;
  1261. !                     error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_type = 
  1262. !                 AttrT_cpy(arg->rda_eis.eis_select->attr_type);
  1263.                           error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_value = NULLAttrV;
  1264.                           error->ERR_ATTRIBUTE.DSE_at_plist.dse_at_next = DSE_AT_NOPROBLEM;
  1265.               dn_free (realtarget);
  1266.  
  1267.  
  1268.  
  1269. *** /tmp/RCSAa11110    Thu Oct 17 14:15:48 1991
  1270. --- quipu/shadow.c    Thu Oct 17 13:51:18 1991
  1271. ***************
  1272. *** 58,64 ****
  1273.   extern AttributeType at_xref;
  1274.   extern AttributeType at_nssr;
  1275.   extern AttributeType at_objectclass;
  1276. - extern Attr_Sequence cpy_as_comp();
  1277.   extern short syntax_dn;
  1278.   
  1279.   typedef struct _atlist {
  1280. --- 58,63 ----
  1281. ***************
  1282. *** 357,363 ****
  1283.                           "external reference missing"));
  1284.               return;
  1285.           }
  1286. !         new_as = as_merge (new_as, cpy_as_comp (as));
  1287.   
  1288.           if ((as = as_find_type (new_as, at_objectclass)) == NULLATTR) {
  1289.               LLOG (log_dsap, LLOG_EXCEPTIONS, (
  1290. --- 356,362 ----
  1291.                           "external reference missing"));
  1292.               return;
  1293.           }
  1294. !         new_as = as_merge (new_as, as_comp_cpy (as));
  1295.   
  1296.           if ((as = as_find_type (new_as, at_objectclass)) == NULLATTR) {
  1297.               LLOG (log_dsap, LLOG_EXCEPTIONS, (
  1298.  
  1299.  
  1300.  
  1301. *** /tmp/RCSAa02760    Mon Oct 14 12:47:21 1991
  1302. --- dsap/common/qos.c    Mon Oct 14 12:46:55 1991
  1303. ***************
  1304. *** 354,362 ****
  1305.       }
  1306.       attrQoS_print (ps, p -> dit_quality, format);
  1307.       }
  1308. !     if (a -> dit_description)
  1309. !     ps_printf (ps, format == READOUT ? "\n%*s(%s)" : " # %s",
  1310. !            a -> dit_description, qos_indent, "");
  1311.   }
  1312.   
  1313.   static struct attrQoS *str2attrQoS (str)
  1314. --- 359,371 ----
  1315.       }
  1316.       attrQoS_print (ps, p -> dit_quality, format);
  1317.       }
  1318. !     if (a -> dit_description) {
  1319. !     if (format == READOUT)
  1320. !         ps_printf (ps, "\n%*s(%s)", qos_indent, 
  1321. !            a -> dit_description);
  1322. !     else
  1323. !         ps_printf (ps, " # %s", a -> dit_description);
  1324. !     }
  1325.   }
  1326.   
  1327.   static struct attrQoS *str2attrQoS (str)
  1328.  
  1329.  
  1330. *** /tmp/RCSAa24516    Thu Nov  7 10:35:20 1991
  1331. --- dsap/common/string.c    Thu Nov  7 10:34:55 1991
  1332. ***************
  1333. *** 88,101 ****
  1334.       0xe5, '?', '?', '?', '?', '?', '?', '?', '?', 
  1335.   
  1336.   /* Diaresis upper case */
  1337. !     0xc4, '?', 0xc9, 0xcd, '?', 0xd3, 0xda, 0x82, 
  1338.   /* Diaresis lower case */
  1339. !     0xe4, '?', 0xe9, 0xed, '?', 0xf3, 0xfa, 0xff, '"', 
  1340.   
  1341.   /* Umlaut upper case */
  1342. !     0xc4, '?', 0xc9, 0xcd, '?', 0xd3, 0xda, 0x82,  
  1343.   /* Umlaut lower case */
  1344. !     0xe4, '?', 0xe9, 0xed, '?', 0xf3, 0xfa, 0xff, '"', 
  1345.   
  1346.   /* Ring upper case */
  1347.       0xc5, '?', '?', '?', '?', '?', '?', '?', 
  1348. --- 94,107 ----
  1349.       0xe5, '?', '?', '?', '?', '?', '?', '?', '?', 
  1350.   
  1351.   /* Diaresis upper case */
  1352. !         0xc4, '?', 0xcb, 0xcf, '?', 0xd6, 0xdc, 0x82,
  1353.   /* Diaresis lower case */
  1354. !         0xe4, '?', 0xeb, 0xef, '?', 0xf6, 0xfc, 0xff, '"',
  1355.   
  1356.   /* Umlaut upper case */
  1357. !         0xc4, '?', 0xcb, 0xcf, '?', 0xd6, 0xdc, 0x82,
  1358.   /* Umlaut lower case */
  1359. !         0xe4, '?', 0xeb, 0xef, '?', 0xf6, 0xfc, 0xff, '"',
  1360.   
  1361.   /* Ring upper case */
  1362.       0xc5, '?', '?', '?', '?', '?', '?', '?', 
  1363. ***************
  1364. *** 113,121 ****
  1365.       '?', '?', '?', '?', '?', '?', '?', '?',  '_', 
  1366.   
  1367.   /* Umlaut upper case */
  1368. !     0xc4, '?', 0xc9, 0xcd, '?', 0xd3, 0xda, 0x82,
  1369.   /* Umlaut lower case */
  1370. !     0xe4, '?', 0xe9, 0xed, '?', 0xf3, 0xfa, 0xff, '"', 
  1371.   
  1372.   /* Cedilla? upper case */
  1373.       '?', 0xc7, '?', '?', '?', '?', '?', '?',
  1374. --- 119,127 ----
  1375.       '?', '?', '?', '?', '?', '?', '?', '?',  '_', 
  1376.   
  1377.   /* Umlaut upper case */
  1378. !         0xc4, '?', 0xcb, 0xcf, '?', 0xd6, 0xdc, 0x82,
  1379.   /* Umlaut lower case */
  1380. !         0xe4, '?', 0xeb, 0xef, '?', 0xf6, 0xfc, 0xff, '"',
  1381.   
  1382.   /* Cedilla? upper case */
  1383.       '?', 0xc7, '?', '?', '?', '?', '?', '?',
  1384.  
  1385.  
  1386. *** /tmp/RCSAa23601    Thu Aug 22 13:09:42 1991
  1387. --- quipu/conn_retry.c    Thu Aug 22 13:06:38 1991
  1388. ***************
  1389. *** 41,46 ****
  1390. --- 41,48 ----
  1391.   
  1392.   struct connection    * conn_alloc();
  1393.   
  1394. + static test_deadlock();
  1395.   /*
  1396.   * Deal with an incoming acceptance of association establishment.
  1397.   * Return value says whether anything has happened or not.
  1398. ***************
  1399. *** 123,129 ****
  1400.           /* See if there is another DSA to try... */
  1401.           if ((on->on_state != ON_ABANDONED) && (on->on_dsas != NULL_DI_BLOCK)) {    
  1402.               LLOG (log_dsap,LLOG_NOTICE,("Trying a different DSA (NOTOK)..."));
  1403. !             if (oper_chain (on) == OK) {
  1404.                   if (ont == NULLOPER)
  1405.                       conn->cn_operlist = onext;
  1406.                   else
  1407. --- 125,132 ----
  1408.           /* See if there is another DSA to try... */
  1409.           if ((on->on_state != ON_ABANDONED) && (on->on_dsas != NULL_DI_BLOCK)) {    
  1410.               LLOG (log_dsap,LLOG_NOTICE,("Trying a different DSA (NOTOK)..."));
  1411. !             if ((test_deadlock(on) == OK) &&
  1412. !                (oper_chain (on) == OK)) {
  1413.                   if (ont == NULLOPER)
  1414.                       conn->cn_operlist = onext;
  1415.                   else
  1416. ***************
  1417. *** 137,143 ****
  1418.           }
  1419.           conn_extract(conn);
  1420.       break;
  1421.       case DONE :
  1422.           DLOG (log_dsap,LLOG_NOTICE,( "D-BIND.RETRY DONE (%d)",conn->cn_ad));
  1423.           if( (conn->cn_ad == NOTOK) || (conn_req_aux(conn) != OK))
  1424. --- 140,146 ----
  1425.           }
  1426.           conn_extract(conn);
  1427.       break;
  1428. !         
  1429.       case DONE :
  1430.           DLOG (log_dsap,LLOG_NOTICE,( "D-BIND.RETRY DONE (%d)",conn->cn_ad));
  1431.           if( (conn->cn_ad == NOTOK) || (conn_req_aux(conn) != OK))
  1432. ***************
  1433. *** 153,159 ****
  1434.               /* See if there is another DSA to try... */
  1435.               if ((on->on_state != ON_ABANDONED) && (on->on_dsas != NULL_DI_BLOCK)) {    
  1436.                   LLOG (log_dsap,LLOG_NOTICE,("Trying a different DSA (DONE)..."));
  1437. !                 if (oper_chain (on) == OK) {
  1438.                       if (ont == NULLOPER)
  1439.                           conn->cn_operlist = onext;
  1440.                       else
  1441. --- 156,163 ----
  1442.               /* See if there is another DSA to try... */
  1443.               if ((on->on_state != ON_ABANDONED) && (on->on_dsas != NULL_DI_BLOCK)) {    
  1444.                   LLOG (log_dsap,LLOG_NOTICE,("Trying a different DSA (DONE)..."));
  1445. !                 if ((test_deadlock(on) == OK) &&
  1446. !                    (oper_chain (on) == OK)) {
  1447.                       if (ont == NULLOPER)
  1448.                           conn->cn_operlist = onext;
  1449.                       else
  1450. ***************
  1451. *** 195,198 ****
  1452. --- 199,241 ----
  1453.   
  1454.       if (pstate != conn->cn_state)
  1455.       conn->cn_last_used = timenow;
  1456. + }
  1457. + static test_deadlock (on)
  1458. + struct oper_act    * on;
  1459. + {
  1460. + struct di_block    * di;
  1461. + register int ndi = 0;
  1462. +     for (di= on -> on_dsas; di!= NULL_DI_BLOCK; di= di -> di_next) 
  1463. +         ndi++;
  1464. +     /* To proceed, we need to contact on_dsas. */
  1465. +     /* Check they do not rely on the conn that has just failed */
  1466. +     /* Possibly a better way of testing this... */
  1467. +     for (di= on -> on_dsas; di!= NULL_DI_BLOCK; di= di -> di_next) 
  1468. +         if (( di-> di_state == DI_DEFERRED ) &&
  1469. +             ( di-> di_perform ) &&
  1470. +             ( di-> di_perform-> on_conn ))
  1471. +             switch (di-> di_perform-> on_conn-> cn_state) {
  1472. +                 case 0:
  1473. +                 case CN_FAILED:
  1474. +                 ndi--;
  1475. +             }
  1476. +     if (ndi != 0)
  1477. +         return OK;
  1478. +     
  1479. +     if (on -> on_task) {    
  1480. +         on -> on_task -> tk_resp.di_error.de_err.dse_type =
  1481. +             DSE_SERVICEERROR;
  1482. +         on -> on_task -> 
  1483. +             tk_resp.di_error.de_err.ERR_SERVICE.DSE_sv_problem =
  1484. +             DSE_SV_UNABLETOPROCEED;
  1485. +     }
  1486. +     
  1487. +     return NOTOK;
  1488.   }
  1489. *** /tmp/RCSAa23601    Thu Aug 22 13:09:42 1991
  1490. --- quipu/get_dsa_info.c    Thu Aug 22 11:10:31 1991
  1491. ***************
  1492. *** 61,66 ****
  1493. --- 61,67 ----
  1494.       struct di_block    * di_lookup;
  1495.       struct oper_act    * on = NULLOPER;
  1496.       int           res;
  1497. +     Entry          te = NULLENTRY;
  1498.   
  1499.       DLOG (log_dsap,LLOG_TRACE,("get_dsa_info()"));
  1500.   
  1501. ***************
  1502. *** 115,132 ****
  1503.       }
  1504.       }
  1505.   
  1506. !     if ((res = really_find_entry(dn, TRUE, dn_stack, FALSE, &((*di_p)->di_entry), err, &(di_lookup))) == DS_OK) 
  1507.       /* is it really OK ??? */
  1508. !     if (((*di_p)->di_entry ->e_data == E_TYPE_CONSTRUCTOR) 
  1509. !         || ((*di_p)->di_entry->e_dsainfo == NULL)
  1510. !         || ((*di_p)->di_entry->e_dsainfo->dsa_addr == NULLPA)) {
  1511.           DN dn_found;
  1512.           DLOG(log_dsap, LLOG_NOTICE, ("rfe returned a constructor"));
  1513. !         dn_found = get_copy_dn((*di_p)->di_entry);
  1514. !         res = constructor_dsa_info(dn_found,dn_stack,FALSE,(*di_p)->di_entry,err,&(di_lookup));
  1515.           dn_free (dn_found);
  1516. !     } else
  1517.           (*di_p)->di_entry->e_refcount++;
  1518.   
  1519.       switch (res)
  1520.       {
  1521. --- 116,137 ----
  1522.       }
  1523.       }
  1524.   
  1525. !     if ((res = really_find_entry(dn, TRUE, dn_stack, FALSE, &te, 
  1526. !                 err, &(di_lookup))) == DS_OK) 
  1527.       /* is it really OK ??? */
  1528. !     if ((te->e_data == E_TYPE_CONSTRUCTOR) 
  1529. !         || (te->e_dsainfo == NULL)
  1530. !         || (te->e_dsainfo->dsa_addr == NULLPA)) {
  1531.           DN dn_found;
  1532.           DLOG(log_dsap, LLOG_NOTICE, ("rfe returned a constructor"));
  1533. !         dn_found = get_copy_dn(te);
  1534. !         res = constructor_dsa_info(dn_found, dn_stack, FALSE, te,
  1535. !                        err, &(di_lookup));
  1536.           dn_free (dn_found);
  1537. !     } else {
  1538. !         (*di_p)->di_entry = te;
  1539.           (*di_p)->di_entry->e_refcount++;
  1540. +     }
  1541.   
  1542.       switch (res)
  1543.       {
  1544. *** /tmp/RCSAa23601    Thu Aug 22 13:09:42 1991
  1545. --- quipu/di_block.c    Thu Aug 22 09:19:15 1991
  1546. ***************
  1547. *** 49,54 ****
  1548. --- 49,59 ----
  1549.   struct di_block *di;
  1550.   {
  1551.       DLOG(log_dsap, LLOG_TRACE, ("di_free()"));
  1552. +     if (di->di_state == -1) {
  1553. +         LLOG (log_dsap,LLOG_EXCEPTIONS, ("duplicate di_free"));
  1554. +         return;
  1555. +     }
  1556.   
  1557.       switch (di->di_type) {
  1558.         case DI_GLOBAL:     break;
  1559.  
  1560.  
  1561.  
  1562. *** /tmp/RCSAa16265    Wed Aug 21 15:59:06 1991
  1563. --- quipu/entry_load.c    Wed Aug 21 15:37:27 1991
  1564. ***************
  1565. *** 362,370 ****
  1566.   
  1567.           if (file_check(offset, e) == OK) {
  1568.                   if ((e->e_children = getentry_block(e, filename)) == NULLAVL) {
  1569.               if (e->e_allchildrenpresent != FALSE &&
  1570.                   e->e_leaf == FALSE) {
  1571. -                 e->e_allchildrenpresent = FALSE;
  1572.                   got_all = FALSE;
  1573.                   return(OK);
  1574.               } else
  1575. --- 362,372 ----
  1576.   
  1577.           if (file_check(offset, e) == OK) {
  1578.                   if ((e->e_children = getentry_block(e, filename)) == NULLAVL) {
  1579. +             if (parse_status != 0)
  1580. +                 return(NOTOK);
  1581.               if (e->e_allchildrenpresent != FALSE &&
  1582.                   e->e_leaf == FALSE) {
  1583.                   got_all = FALSE;
  1584.                   return(OK);
  1585.               } else
  1586. *** dsap/common/_turbo_index.c    Tue Aug 13 13:06:57 1991
  1587. --- dsap/common/turbo_index.c    Tue Aug 13 13:07:27 1991
  1588. ***************
  1589. *** 472,477 ****
  1590. --- 472,478 ----
  1591.       for ( j = i + 1; pindex->i_nonlocalaliases[ j ]; j++ )
  1592.           pindex->i_nonlocalaliases[ j - 1 ] =
  1593.               pindex->i_nonlocalaliases[ j ];
  1594. +     pindex->i_nonlocalaliases[ j - 1 ] = NULLENTRY;
  1595.   
  1596.       return;
  1597.   }
  1598. *** dsap/common/_attribute.c    Mon Aug 12 19:11:30 1991
  1599. --- dsap/common/attribute.c    Mon Aug 12 19:11:54 1991
  1600. ***************
  1601. *** 199,204 ****
  1602. --- 199,206 ----
  1603.              if (acl->ac_default == NULLACL_INFO)
  1604.                  acl->ac_default = acl_default ();
  1605.               }
  1606. +     } else {
  1607. +         eptr->e_acl = NULLACL;
  1608.       }
  1609.   
  1610.       if (as = entry_find_type (eptr,at_edbinfo)) {
  1611. *** dsap/common/attribute.c~    Wed Jul 17 12:25:03 1991
  1612. --- dsap/common/attribute.c    Mon Aug 12 15:35:30 1991
  1613. ***************
  1614. *** 368,373 ****
  1615. --- 371,377 ----
  1616.                      || (AttrT_cmp (as->attr_type,at_alias) == 0)
  1617.                      || (AttrT_cmp (as->attr_type,at_inherit) == 0)) {
  1618.                       LLOG(log_dsap,LLOG_EXCEPTIONS,("Inherited system attribute only allowed in default case"));
  1619. +                     error->dse_type = DSE_ATTRIBUTEERROR;
  1620.                       error->ERR_ATTRIBUTE.DSE_at_name = get_copy_dn (eptr);
  1621.                       error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_what =DSE_AT_CONSTRAINTVIOLATION;
  1622.                       error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_type = AttrT_cpy (as->attr_type);
  1623. ***************
  1624. *** 379,384 ****
  1625. --- 383,389 ----
  1626.                   if (as->attr_value == NULLAV) {
  1627.                       if ((nas = entry_find_type (eptr,as->attr_type)) == NULLATTR) {
  1628.                           LLOG(log_dsap,LLOG_EXCEPTIONS,("Value missing for always inherited attribute type"));
  1629. +                             error->dse_type = DSE_ATTRIBUTEERROR;
  1630.                           error->ERR_ATTRIBUTE.DSE_at_name = get_copy_dn (eptr);
  1631.                           error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_what =DSE_AT_NOSUCHATTRIBUTE;
  1632.                           error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_type = AttrT_cpy (as->attr_type);
  1633. ***************
  1634. *** 394,399 ****
  1635. --- 399,405 ----
  1636.                   if (as->attr_value == NULLAV) {
  1637.                       if ((nas = entry_find_type (eptr,as->attr_type)) == NULLATTR) {
  1638.                           LLOG(log_dsap,LLOG_EXCEPTIONS,("Value missing for default inherited attribute type"));
  1639. +                             error->dse_type = DSE_ATTRIBUTEERROR;
  1640.                           error->ERR_ATTRIBUTE.DSE_at_name = get_copy_dn (eptr);
  1641.                           error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_what =DSE_AT_NOSUCHATTRIBUTE;
  1642.                           error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_type = AttrT_cpy (as->attr_type);
  1643.  
  1644. *** /tmp/RCSAa27974    Thu Nov 21 13:36:17 1991
  1645. --- dsap/x500as/af.py    Thu Nov 21 13:35:40 1991
  1646. ***************
  1647. *** 88,93 ****
  1648. --- 88,99 ----
  1649.           ANY [[a asn]]
  1650.               OPTIONAL
  1651.       }
  1652. +     %D{
  1653. +         if ((*parm)->asn == NULLPE)
  1654. +             (*parm)->p_type = ALG_PARM_ABSENT;
  1655. +         else
  1656. +             (*parm)->p_type = ALG_PARM_UNKNOWN;
  1657. +     %}
  1658.   
  1659.   SubjectPublicKeyInfo [[P struct key_info *]]
  1660.       ::=
  1661. *** dsap/common/_cpair.c       Wed Jul 17 12:25:16 1991
  1662. --- dsap/common/cpair.c    Tue Sep 17 14:41:19 1991
  1663. ***************
  1664. *** 92,98 ****
  1665.     str = ptr;
  1666.     if ((str != NULLCP) && (index(str, '#') != NULLCP))
  1667.     {
  1668. !     result->cert = str2cert(str);
  1669.       if (result->cert == (struct certificate *) 0)
  1670.       {
  1671.         free((char *) result);
  1672. --- 92,98 ----
  1673.     str = ptr;
  1674.     if ((str != NULLCP) && (index(str, '#') != NULLCP))
  1675.     {
  1676. !     result->reverse = str2cert(str);
  1677.       if (result->cert == (struct certificate *) 0)
  1678.       {
  1679.         free((char *) result);
  1680.  
  1681.  
  1682. *** /tmp/RCSAa23032    Thu Nov 21 09:06:53 1991
  1683. --- quipu/task_select.c    Thu Nov 21 09:06:27 1991
  1684. ***************
  1685. *** 40,45 ****
  1686. --- 40,54 ----
  1687.   time_t lastedb_update;
  1688.   struct oper_act * pending_ops = NULLOPER;
  1689.   
  1690. + #ifndef NO_STATS
  1691. + extern LLog * log_stat;
  1692. + static time_t last_log_close = (time_t)0;
  1693. + #define LOGOPENTIME 60*60    /* Close once every 60 minutes */
  1694. + #endif
  1695.   struct task_act    * task_select(secs_p)
  1696.   int        * secs_p;
  1697.   {
  1698. ***************
  1699. *** 437,442 ****
  1700. --- 446,462 ----
  1701.           (*secs_p) = 0;    /* let connection be re-used */
  1702.          }
  1703.       }
  1704. + #ifndef NO_STATS
  1705. +     if ( (timenow - last_log_close) >= LOGOPENTIME ) {
  1706. +     ll_close (log_stat);
  1707. +     last_log_close = timenow;
  1708. +     } else {
  1709. +     if ( (ret_tk == NULLTASK) && (*secs_p >= LOGOPENTIME))
  1710. +         *secs_p = LOGOPENTIME;    /* Wake to close log! */
  1711. +     }
  1712. + #endif
  1713.   
  1714.       return(ret_tk);
  1715.   }
  1716. *** /tmp/RCSAa23069    Thu Nov 21 09:16:46 1991
  1717. --- dsap/common/entry.c    Thu Nov 21 09:15:01 1991
  1718. ***************
  1719. *** 36,41 ****
  1720. --- 36,46 ----
  1721.   AttributeType at_alias;
  1722.   AttributeType at_objectclass;
  1723.   
  1724. + extern int local_master_size;
  1725. + extern int local_slave_size;
  1726. + extern int local_cache_size;
  1727.   directory_free (directory)
  1728.   Entry directory;
  1729.   {
  1730. ***************
  1731. *** 47,52 ****
  1732. --- 52,67 ----
  1733.   
  1734.           if (directory->e_children != NULLAVL)
  1735.               (void) avl_free(directory->e_children, directory_free);
  1736. +         switch (directory->e_data) {
  1737. +         case E_TYPE_SLAVE:
  1738. +             local_slave_size--; break;
  1739. +         case E_DATA_MASTER:
  1740. +             local_master_size--; break;
  1741. +         case E_TYPE_CACHE_FROM_MASTER:
  1742. +             local_cache_size--; break;
  1743. +         }
  1744.           entry_free(directory);
  1745.       }
  1746.   }
  1747. *** /tmp/RCSAa28299    Thu Nov 21 15:45:25 1991
  1748. --- quipu/dsa_chain.c    Thu Nov 21 15:43:54 1991
  1749. ***************
  1750. *** 995,1002 ****
  1751.       */
  1752.       sort_dsa_list (&di);
  1753.   
  1754. !     if (tk == NULLTASK)
  1755. !     return;        /* already done it ! */
  1756.   
  1757.       if(di2cref(di, &(tk->tk_resp.di_error.de_err), tk->tk_conn->cn_ctx) != OK)
  1758.       {
  1759. --- 995,1006 ----
  1760.       */
  1761.       sort_dsa_list (&di);
  1762.   
  1763. !     if (tk == NULLTASK) {
  1764. !     if (di->di_oper == NULLOPER)
  1765. !         return FALSE;
  1766. !     else
  1767. !         return TRUE;
  1768. !     }
  1769.   
  1770.       if(di2cref(di, &(tk->tk_resp.di_error.de_err), tk->tk_conn->cn_ctx) != OK)
  1771.       {
  1772. ***************
  1773. *** 1010,1023 ****
  1774.           task_conn_extract(tk);
  1775.           task_error(tk);
  1776.           task_extract(tk);
  1777. !         return;
  1778.       }
  1779. !     return;
  1780.       }
  1781.   
  1782.       task_conn_extract(tk);
  1783.       task_error(tk);
  1784.       task_extract(tk);
  1785.   }
  1786.   
  1787.   static struct access_point * di2ap (di)
  1788. --- 1014,1029 ----
  1789.           task_conn_extract(tk);
  1790.           task_error(tk);
  1791.           task_extract(tk);
  1792. !         return TRUE;
  1793.       }
  1794. !     return TRUE;
  1795.       }
  1796.   
  1797.       task_conn_extract(tk);
  1798.       task_error(tk);
  1799.       task_extract(tk);
  1800. +     return TRUE;
  1801.   }
  1802.   
  1803.   static struct access_point * di2ap (di)
  1804. *** /tmp/RCSAa01769    Fri Nov 22 09:37:56 1991
  1805. --- others/quipu/uips/dish/Makefile    Fri Nov 22 09:35:04 1991
  1806. ***************
  1807. *** 154,162 ****
  1808.           -@ls -gls $@
  1809.           -@echo ""
  1810.   
  1811.   xquipurc:    quipurc.o $(LIBES)
  1812.           $(LDCC) $(LDFLAGS) -o $@ quipurc.o \
  1813. !             $(LIBDSAP) $(LIBISODE) $(LSOCKET) $(LIBGDBM)
  1814.   
  1815.   l-quipurc:;    $(LINT) $(LFLAGS) quipurc.c $(LLIBS) \
  1816.               | grep -v "warning: possible pointer alignment problem"
  1817. --- 154,165 ----
  1818.           -@ls -gls $@
  1819.           -@echo ""
  1820.   
  1821. + # Don't use shared libs for xquipurc.
  1822.   xquipurc:    quipurc.o $(LIBES)
  1823.           $(LDCC) $(LDFLAGS) -o $@ quipurc.o \
  1824. !             $(TOPDIR)libdsap.a $(TOPDIR)libisode.a \
  1825. !             $(LSOCKET) $(LIBGDBM)
  1826.   
  1827.   l-quipurc:;    $(LINT) $(LFLAGS) quipurc.c $(LLIBS) \
  1828.               | grep -v "warning: possible pointer alignment problem"
  1829. *** /tmp/RCSAa23166    Thu Nov 21 09:36:21 1991
  1830. --- dsap/oidtable.oc    Fri Aug 23 08:40:19 1991
  1831. ***************
  1832. *** 156,164 ****
  1833.   
  1834.   pilotDSA:     pilotObjectClass.21 : dsa : dSAQuality : 
  1835.   
  1836. ! qualityLabelledData:     pilotObjectClass.22 : top : dSAQuality : \
  1837.       subtreeMinimumQuality, subtreeMaximumQuality
  1838.   
  1839.   # QUIPU defined object classes
  1840.   
  1841.   quipuDSA:        quipuObjectClass.1 : dSA : \
  1842. --- 162,174 ----
  1843.   
  1844.   pilotDSA:     pilotObjectClass.21 : dsa : dSAQuality : 
  1845.   
  1846. ! # Retired - wrong mandatory attribute
  1847. ! oldQualityLabelledData:     pilotObjectClass.22 : top : dSAQuality : \
  1848.       subtreeMinimumQuality, subtreeMaximumQuality
  1849.   
  1850. + qualityLabelledData:     pilotObjectClass.23 : top : singleLevelQuality : \
  1851. +     subtreeMinimumQuality, subtreeMaximumQuality
  1852.   # QUIPU defined object classes
  1853.   
  1854.   quipuDSA:        quipuObjectClass.1 : dSA : \
  1855. *** /tmp/patchlevel    Thu Nov 21 15:56:54 1991
  1856. --- quipu/patchlevel    Thu Nov 21 15:56:12 1991
  1857. ***************
  1858. *** 0 ****
  1859. --- 1,1 ----
  1860. + 1:Thu Nov 21 15:56:12 GMT 1991
  1861.  
  1862. -------------------- Bug No 23 --------------------------
  1863. Return-Path: <c.robbins@xtel.co.uk>
  1864. Delivery-Date: Tue, 19 May 1992 09:07:24 +0100
  1865. Received: from xtel.co.uk by lancaster.xtel.co.uk with SMTP (PP) 
  1866.           id <07743-0@lancaster.xtel.co.uk>; Tue, 19 May 1992 09:07:18 +0100
  1867. To: quipu-bugs@xtel.co.uk
  1868. Subject: SunOS 4.1.2
  1869. Date: Tue, 19 May 92 09:07:14 +0100
  1870. From: Colin Robbins <c.robbins@xtel.co.uk>
  1871.  
  1872. QUIPU VERSION:    7.0
  1873.  
  1874. ISODE VERSION:    7.0
  1875.  
  1876. MACHINE:    Sun 4/330 (X-TEL config)
  1877.  
  1878. O/S:        SunOS 4.1.2
  1879.  
  1880. PROGRAM:    QUIPU
  1881.  
  1882. SYNOPSIS:    Will not compile.    
  1883.         Error message "can't link encode_NRS_info" is
  1884.         generated at link time.
  1885.  
  1886. SAMPLE FIX:
  1887.  
  1888. *** 8.0    1991/07/17 12:25:33
  1889. --- dsap/common/nrs_info.c    1992/04/03 08:14:39
  1890. ***************
  1891. *** 76,81 ****
  1892. --- 88,94 ----
  1893.   #include "quipu/util.h"
  1894.   #include "quipu/attr.h"        /* Def.s for READOUT etc */
  1895.   #include "quipu/nrs_info.h"
  1896. + #include "quipu/NRS-types.h"
  1897.   
  1898.   extern LLog    * log_dsap;
  1899.   PE          asn2pe();
  1900. ***************
  1901. *** 1700,1706 ****
  1902.   {
  1903.   PE ret_pe;
  1904.   
  1905. !         if (encode_QuipuNRS_NRSInformation (&ret_pe, 1, 0, NULLCP, nrs) != OK)
  1906.           return (NULLPE);
  1907.   
  1908.       return (ret_pe);
  1909. --- 1713,1719 ----
  1910.   {
  1911.   PE ret_pe;
  1912.   
  1913. !         if (encode_NRS_NRSInformation (&ret_pe, 1, 0, NULLCP, nrs) != OK)
  1914.           return (NULLPE);
  1915.   
  1916.       return (ret_pe);
  1917. ***************
  1918. *** 1711,1717 ****
  1919.   {
  1920.       struct nrs_info    * nrs;
  1921.   
  1922. !     if (decode_QuipuNRS_NRSInformation (pe, 1, NULLIP, NULLVP, &nrs) != OK)
  1923.       {
  1924.           return ((struct nrs_info *) NULL);
  1925.       }
  1926. --- 1724,1730 ----
  1927.   {
  1928.       struct nrs_info    * nrs;
  1929.   
  1930. !     if (decode_NRS_NRSInformation (pe, 1, NULLIP, NULLVP, &nrs) != OK)
  1931.       {
  1932.           return ((struct nrs_info *) NULL);
  1933.       }
  1934.